package insignia;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.ArrayList;
import java.util.List;

import junit.framework.Assert;
import model.Publicacion.Pregunta;
import model.Publicacion.Publicacion;
import model.Usuario.UsuarioSimple;
import model.insigniaYlogros.InsigniaSimple;
import model.insigniaYlogros.Logro;
import model.insigniaYlogros.LogroPubDeFecha;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Before;
import org.junit.Test;

public class TestInsigniaPubDeFecha {
	InsigniaSimple ipf;
	UsuarioSimple us;
	  Pregunta p;
	  Logro l;

	@Before
	public void setUp() throws Exception {
		l=new LogroPubDeFecha(0, new DateTime(2015, 12, 10, 0, 0,DateTimeZone.UTC));
		us=mock(UsuarioSimple.class);
		p=mock(Pregunta.class);
		ipf=new InsigniaSimple("adr",l);
	}

	@Test
	public void testSeCumple() {
		
		
		List<Publicacion> pubs=new ArrayList<Publicacion>();
		pubs.add(p);
		when(p.getFecha()).thenReturn(new DateTime(2014, 10, 10, 0, 0,DateTimeZone.UTC));
		when(us.getPublicaciones()).thenReturn(pubs);
		
		Assert.assertEquals(true, ipf.seCumple(us));
		verify(us,times(1)).getPublicaciones();
		verify(p,times(1)).getFecha();
		when(p.getFecha()).thenReturn(new DateTime(2015, 12, 12, 0, 0,DateTimeZone.UTC));
		Assert.assertEquals(false, ipf.seCumple(us));
	
		
	}

}
